package com.itheima.api;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.itheima.dto.PmsProductAttributeCategoryItem;
import com.itheima.mapper.PmsProductAttributeCategoryMapper;
import com.itheima.mapper.PmsProductAttributeMapper;
import com.itheima.pojo.db.PmsProductAttribute;
import com.itheima.pojo.db.PmsProductAttributeCategory;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.List;

@DubboService
public class PmsProductAttributeCategoryApiImpl implements PmsProductAttributeCategoryApi {
    @Autowired
    private PmsProductAttributeCategoryMapper pmsProductAttributeCategoryMapper;
    @Autowired
    private PmsProductAttributeMapper pmsProductAttributeMapper;

    @Override
    public int insert(PmsProductAttributeCategory productAttributeCategory) {
        return pmsProductAttributeCategoryMapper.insert(productAttributeCategory);
    }

    @Override
    public int delete(Long id) {
        return pmsProductAttributeCategoryMapper.deleteById(id);
    }

    @Override
    public IPage<PmsProductAttributeCategory> selectPage(IPage<PmsProductAttributeCategory> page) {
        return pmsProductAttributeCategoryMapper.selectPage(page, null);
    }

    @Override
    public List<PmsProductAttributeCategoryItem> select() {
        List<PmsProductAttributeCategory> pmsProductAttributeCategories = pmsProductAttributeCategoryMapper.selectList(null);
        List<PmsProductAttributeCategoryItem> items = new ArrayList<>();
        for (PmsProductAttributeCategory pmsProductAttributeCategory : pmsProductAttributeCategories) {
            PmsProductAttributeCategoryItem item = new PmsProductAttributeCategoryItem();
            BeanUtils.copyProperties(pmsProductAttributeCategory,item);
            item.setProductAttributeList(pmsProductAttributeMapper.selectList(new LambdaQueryWrapper<PmsProductAttribute>().eq(PmsProductAttribute::getProductAttributeCategoryId,pmsProductAttributeCategory.getId())));
            items.add(item);
        }
        return items;
    }

    @Override
    public int updateById(PmsProductAttributeCategory productAttributeCategory) {
        return pmsProductAttributeCategoryMapper.updateById(productAttributeCategory);
    }

    @Override
    public PmsProductAttributeCategory selectOne(Long id) {
        return pmsProductAttributeCategoryMapper.selectById(id);
    }
}
